package org.example.me.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * Excel类型枚举类
 * 定义了系统支持的Excel导出类型及其相关信息
 */
@AllArgsConstructor
@Getter
public enum ExcelTypeEnum {

    /**
     * 用户表类型
     * 用于导出用户相关数据
     */
    USER("USER", "用户表", "user", "用户表"),

    /**
     * 订单表类型
     * 用于导出订单相关数据
     */
    ORDER("ORDER", "订单表", "order", "订单表"),

    /**
     * 多Sheet表类型
     * 用于在一个Excel文件中导出多个不同类型的Sheet
     */
    MULTI_SHEET("MULTI_SHEET", "多Sheet表", "multiSheet", ""),

    /**
     * 多文件类型
     * 用于导出多个独立的Excel文件
     */
    MULTI_FILE("MULTI_FILE", "多文件", "multiFile", ""),

    /**
     * 动态表头类型
     * 用于导出具有动态表头的Excel文件
     */
    DYNAMIC_HEAD("DYNAMIC_HEAD", "动态表头", "dynamicHead", ""),
    ;

    /**
     * 类型编码
     * 用于在系统中唯一标识Excel类型
     */
    private final String code;

    /**
     * 类型描述
     * 用于展示给用户的可读描述
     */
    private final String desc;

    /**
     * 文件名
     * 用于生成Excel文件的默认文件名
     */
    private final String fileName;

    /**
     * Sheet名
     * 用于生成Excel文件的默认Sheet名
     */
    private final String sheetName;

    /**
     * 根据编码获取对应的Excel类型枚举值
     * 通过类型编码查找对应的枚举值
     * @param code 类型编码
     * @return 对应的Excel类型枚举值，未找到返回null
     */
    public static ExcelTypeEnum getByCode(String code) {
        for (ExcelTypeEnum value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        return null;
    }
}